const { io } = require("socket.io-client");

// 创建两个客户端连接
const user1 = io("http://localhost:3001");
const user2 = io("http://localhost:3001");

// 用户1连接处理
user1.on("connect", () => {
    console.log("用户1已连接");
    // 加入聊天
    user1.emit("user_join", "张三");
});

// 用户2连接处理
user2.on("connect", () => {
    console.log("用户2已连接");
    // 加入聊天
    user2.emit("user_join", "李四");
});

// 监听未读消息
user1.on("unread_messages", (messages) => {
    console.log("张三收到未读消息:", messages);
});

user2.on("unread_messages", (messages) => {
    console.log("李四收到未读消息:", messages);
});

// 监听消息历史
user1.on("message_history", (messages) => {
    console.log("收到历史消息:", messages);
});

// 监听用户加入事件
user1.on("user_joined", (data) => {
    console.log("用户加入通知:", data);
    
    // 当两个用户都加入后，开始发送测试消息
    if (data.onlineUsers.length === 2) {
        // 用户1发送群聊消息
        setTimeout(() => {
            user1.emit("chat_message", { message: "大家好！" });
        }, 1000);

        // 用户2回复群聊消息
        setTimeout(() => {
            user2.emit("chat_message", { message: "你好，张三！" });
        }, 2000);

        // 用户1发送私聊消息给用户2
        setTimeout(() => {
            user1.emit("private_message", {
                to: user2.id,
                message: "这是一条私密消息"
            });
        }, 3000);

        // 测试消息已读状态
        setTimeout(() => {
            user2.emit("message_read", { messageId: "最新消息的ID" });
        }, 4000);

        // 测试状态更新为离线
        setTimeout(() => {
            user2.emit("update_status", "offline");
        }, 5000);

        // 用户1发送消息给离线的用户2
        setTimeout(() => {
            user1.emit("chat_message", { message: "李四，你在吗？" });
            user1.emit("private_message", {
                to: user2.id,
                message: "给你发送离线消息测试"
            });
        }, 6000);

        // 用户2重新上线
        setTimeout(() => {
            user2.emit("update_status", "online");
        }, 8000);
    }
});

// 监听群聊消息
user1.on("chat_message", (data) => {
    console.log("用户1收到群聊消息:", data);
    // 标记消息为已读
    user1.emit("message_read", { messageId: data.messageId });
});

user2.on("chat_message", (data) => {
    console.log("用户2收到群聊消息:", data);
    // 标记消息为已读
    user2.emit("message_read", { messageId: data.messageId });
});

// 监听私聊消息
user2.on("private_message", (data) => {
    console.log("用户2收到私聊消息:", data);
    // 标记私聊消息为已读
    user2.emit("message_read", { messageId: data.messageId });
});

// 监听消息已读状态
user1.on("message_read_status", (data) => {
    console.log("消息已读状态更新:", data);
});

user2.on("message_read_status", (data) => {
    console.log("消息已读状态更新:", data);
});

// 监听用户状态变化
user1.on("user_status_changed", (data) => {
    console.log("用户状态变化:", data);
});

user2.on("user_status_changed", (data) => {
    console.log("用户状态变化:", data);
});

// 监听用户离开事件
user1.on("user_left", (data) => {
    console.log("用户离开通知:", data);
});

user2.on("user_left", (data) => {
    console.log("用户离开通知:", data);
});

// 15秒后关闭连接
setTimeout(() => {
    user1.disconnect();
    user2.disconnect();
    console.log("测试完成，连接已关闭");
}, 15000); 